package com.ruoyi.business.service;

import java.time.LocalDateTime;
import java.util.List;

import com.ruoyi.business.domain.OrderInfo;

/**
 * 订单管理Service接口
 *
 * @author ruoyi
 * @date 2025-07-11
 */
public interface IOrderInfoService {
    /**
     * 查询订单管理
     *
     * @param outerOrderNo 订单管理主键
     * @return 订单管理
     */
    public OrderInfo selectOrderInfoByOuterOrderNo(String outerOrderNo);

    /**
     * 查询订单管理列表
     *
     * @param orderInfo 订单管理
     * @return 订单管理集合
     */
    public List<OrderInfo> selectOrderInfoList(OrderInfo orderInfo);

    /**
     * 新增订单管理
     *
     * @param orderInfo 订单管理
     * @return 结果
     */
    public int insertOrderInfo(OrderInfo orderInfo);

    /**
     * 修改订单管理
     *
     * @param orderInfo 订单管理
     * @return 结果
     */
    public int updateOrderInfo(OrderInfo orderInfo);

    /**
     * 批量删除订单管理
     *
     * @param outerOrderNos 需要删除的订单管理主键集合
     * @return 结果
     */
    public int deleteOrderInfoByOuterOrderNos(String[] outerOrderNos);

    /**
     * 删除订单管理信息
     *
     * @param outerOrderNo 订单管理主键
     * @return 结果
     */
    public int deleteOrderInfoByOuterOrderNo(String outerOrderNo);

    /**
     * 批量复制订单
     *
     * @param outerOrderNos 需要复制的订单编号列表
     * @return 结果
     */
    public int batchCopyOrderInfo(List<String> outerOrderNos);

    /**
     * 推送订单到微盟
     *
     * @param outerOrderNos
     */
    void sendOrderInfo(List<String> outerOrderNos);

    /**
     * 订单发货
     *
     * @param outerOrderNos
     */
    void sendLogistics(List<String> outerOrderNos);

    /**
     * 订单完成
     *
     * @param outerOrderNos
     */
    void sendFinishStatus(List<String> outerOrderNos);

    /**
     * 调整积分
     *
     * @param outerOrderNos
     */
    void adjustPoint(List<String> outerOrderNos);

    /**
     * 订单取消
     *
     * @param outerOrderNos
     */
    void sendCancelStatus(List<String> outerOrderNos);

    /**
     * 通过代客ID查询威猛订单详情
     * @param outerOrderNo
     */
    Long searchOrderInfoFromWeimob(String outerOrderNo, Long startTime, Long endTime);

    //自动完成订单列表
    List<OrderInfo> autoFinshedOrder(LocalDateTime expireTime);

    /**
     * 订单恢复
     *
     * @param outerOrderNos
     */
    void restoreStatus(List<String> outerOrderNos);
}
